import { IPSAppDEMethod } from '../../app/dataentity/ipsapp-demethod';
import { IPSAppView } from '../../app/view/ipsapp-view';
import { IPSDataEntityObject } from '../ipsdata-entity-object';
import { IPSDEOPPriv } from '../priv/ipsdeoppriv';
import { IPSUIAction } from '../../view/ipsuiaction';

/**
 *
 * 子接口类型识别属性[]
 * @export
 * @interface IPSDEUIAction
 */
export interface IPSDEUIAction extends IPSDataEntityObject, IPSUIAction {
  /**
   * 无权限显示模式
   */
  noPrivDisplayMode: number;

  /**
   * 前端应用视图
   *
   * @type {IPSAppView}
   */
  getFrontPSAppView(): IPSAppView | null;

  /**
   * 前端应用视图
   *
   * @type {IPSAppView}
   */
  get frontPSAppView(): IPSAppView | null;

  /**
   * 前端应用视图（必须存在）
   *
   * @type {IPSAppView}
   */
  getFrontPSAppViewMust(): IPSAppView;

  /**
   * 应用实体方法
   *
   * @type {IPSAppDEMethod}
   */
  getPSAppDEMethod(): IPSAppDEMethod | null;

  /**
   * 应用实体方法
   *
   * @type {IPSAppDEMethod}
   */
  get psAppDEMethod(): IPSAppDEMethod | null;

  /**
   * 应用实体方法（必须存在）
   *
   * @type {IPSAppDEMethod}
   */
  getPSAppDEMethodMust(): IPSAppDEMethod;

  /**
   * 相关实体操作标识
   *
   * @type {IPSDEOPPriv}
   */
  getPSDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 相关实体操作标识
   *
   * @type {IPSDEOPPriv}
   */
  get psDEOPPriv(): IPSDEOPPriv | null;

  /**
   * 相关实体操作标识（必须存在）
   *
   * @type {IPSDEOPPriv}
   */
  getPSDEOPPrivMust(): IPSDEOPPriv;

  /**
   * 先保存目标数据
   * @type {boolean}
   * @default false
   */
  saveTargetFirst: boolean;
}
